class Pager<T> {
  final List<T>? data; // 数据列表
  final int totalRecords; // 总记录数
  final int totalPages; // 总页数
  final int currentPage; // 当前页数
  final int pageSize; // 每页数量

  Pager({
    this.data,
    required this.totalRecords,
    required this.totalPages,
    required this.currentPage,
    required this.pageSize,
  });

  // 从 JSON 数据中解析
  factory Pager.fromJson(Map<String, dynamic> json, T Function(Map<String, dynamic>) fromJsonT) {
    var dataList = json['data'] as List?;
    List<T> data = [];
    if (dataList != null && dataList.isNotEmpty) {
      data = List<T>.from(dataList.map((e) => fromJsonT(e))); // 这里将每个元素从 Map 转换为 T 类型
    }

    return Pager(
      data: data.isNotEmpty ? data : [],
      totalRecords: json['totalRecords'],
      totalPages: json['totalPages'],
      currentPage: json['currentPage'],
      pageSize: json['pageSize'],
    );
  }

  // 将对象转为 JSON
  Map<String, dynamic> toJson(Map<String, dynamic> Function(T) toJsonT) {
    return {
      'data': data?.map((e) => toJsonT(e)).toList(), // 将 data 中的每个元素转换为 JSON
      'totalRecords': totalRecords,
      'totalPages': totalPages,
      'currentPage': currentPage,
      'pageSize': pageSize,
    };
  }
}
